/*
 * @Author: boyyang
 * @Date: 2022-02-20 12:37:51
 * @LastEditTime: 2022-02-23 17:51:48
 * @LastEditors: boyyang
 * @Description: 
 * @FilePath: \boyyang\src\utils\axios.ts
 */

import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios'
import { env } from '@/utils/env'

const service: AxiosInstance = axios.create({
    baseURL: env.VITE_APP_BASEURL,
    timeout: 10 * 1000,
})

service.interceptors.request.use((config: AxiosRequestConfig): AxiosRequestConfig | Promise<AxiosRequestConfig> => {

    // if (config.method == 'get') {
    //     config.headers.get['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8'
    // }
    // if (config.method == 'post') {
    //     config.headers.post['Content-Type'] = 'application/json;charset=utf-8'
    // }
    return config
})

service.interceptors.response.use(
    (res: AxiosResponse): AxiosResponse<any> | Promise<AxiosResponse<any>> => {
        // let result = res && res.data
        return res && res.data
    },
    error => {
        if (error && error.response) {
            switch (error.response.status) {
                case 400:
                    console.log('错误请求')
                    break;
                case 401:
                    console.log('未授权，请重新登录')
                    break;
                case 403:
                    console.log('拒绝访问')
                    break;
                case 404:
                    console.log('请求错误,未找到该资源')
                    break;
                case 405:
                    console.log('请求方法未允许')
                    break;
                case 408:
                    console.log('请求超时')
                    break;
                case 500:
                    console.log('服务器端出错')
                    break;
                case 501:
                    console.log('网络未实现')
                    break;
                case 502:
                    console.log('网络错误')
                    break;
                case 503:
                    console.log('服务不可用')
                    break;
                case 504:
                    console.log('网络超时')
                    break;
                case 505:
                    console.log('http版本不支持该请求')
                    break;
                default:
                    console.log(`连接错误${error.response.status}`)
            }
        } else {
            console.log('服务未连接')
        }
        return Promise.reject(error.response)
    }
)

export default service